package com.fx.zmlzml.algorithm.ga;

import lombok.Data;

@Data
public class GaConfig {

    // 遗传算法基础参数配置
    private static final int POPULATION_SIZE = 200; // 种群大小，每次迭代中包含的配置数量
    private static final int MAX_GENERATIONS = 200; // 最大迭代次数，遗传算法运行的代数
    private static final double BASE_MUTATION_RATE = 0.1; // 基础变异率，控制配置变异的概率
    private static final double BASE_CROSSOVER_RATE = 0.8; // 基础交叉率，控制配置交叉的概率
    private static final int ELITISM_COUNT = 5; // 精英保留数量，每代保留的最优配置数量
    private static final int RESULT_COUNT = 5; // 返回结果数量，最终返回的推荐配置数量
    private static final double DIVERSITY_THRESHOLD = 0.3; // 多样性阈值，低于此值时增加变异率

    /**
     * 入门级计算
     */
    public final class Easy {
        public static final int POPULATION_SIZE = 100; // 种群大小，每次迭代中包含的配置数量
        public static final int MAX_GENERATIONS = 20; // 最大迭代次数，遗传算法运行的代数
        public static final double BASE_MUTATION_RATE = 0.2; // 基础变异率，控制配置变异的概率
        public static final double BASE_CROSSOVER_RATE = 0.6; // 基础交叉率，控制配置交叉的概率
        public static final int ELITISM_COUNT = 2; // 精英保留数量，每代保留的最优配置数量
        public static final int RESULT_COUNT = 3; // 返回结果数量，最终返回的推荐配置数量
        public static final double DIVERSITY_THRESHOLD = 0.4; // 多样性阈值，低于此值时增加变异率
    }

}
